<?php
/**
 * @Author: Marte
 * @Date:   2018-03-16 17:01:09
 * @Last Modified by:   Marte
 * @Last Modified time: 2018-03-20 16:31:47
 */
namespace App\Http\Controllers;
use App\Models\TestormModels;

class TestormController extends Controller{
    public function testorm(){
        //ORM 之 all()：查询所有数据
        // $user_data = TestormModels::all();
        // 以表主键为条件进行查询id = 2,返回模型对象,可以用模型取数据，和数组取数据
        // $user_data = TestormModels::find(2);
        // echo $user_data['id'];die;
        // echo $user_data->id;die;
        // 以主键条件查找，没查到就抛出异常
        // $user_data = TestormModels::findOrFail(2);
        // 模型中的查询构造器
        // 查询全部
        // $user_data = TestormModels::get();
        // 条件+排序+取结果集的第一条数据
        // $user_data = TestormModels::where('id','=',7)->orderBy('id','desc')->first();
        // // 取时间戳测试。
        // $user_data = TestormModels::where('id','=',7)->first();
        // echo $user_data->created_at;
        // 分段查询
        // echo '<pre>';
        // TestormModels::chunk(1,function($user_data){
        //         dd($user_data);
        // });
        // dd($user_data);

        //聚合函数
        // $num = TestormModels::count();
        // var_dump($max);//int(2)
        // $max = TestormModels::where('id','>','1')->max('tel');
        // var_dump($max);//int(2)

        // ORM新增+自定义时间戳+批量赋值

        // 新增数据
        // 1.通过模型新增数据，涉及自定义时间戳,可以在模型关闭自动维护时间戳，一般建议开启
            // $test = new TestormModels();
            // $test->username = 'wewwe';
            // $test->password = '123456789';
            // $test->tel = 12121;
            // $bool = $test->save();
            // var_dump($bool);

        // 2.通过模型的create方法新增数据，涉及批量赋值
        // create 方法保存一个新的模型。该方法返回被插入的模型实例。需要指定模型的 fillable 或 guarded 属性
        // fillable :设定允许批量赋值的字段  guarded：不允许护字段
        // 报错： Field 'culture_title' doesn't have a default value
        // 在数据库中对报错的字段设置默认值， 整数：0 ，字符串：设为NULL，
        // $model = TestormModels::create(['username'=>'mmm']);
        // var_dump($model);
        // 3.firstOrCreate();以属性查找用户，如果没有则新增实例
        // $user_data = TestormModels::firstOrCreate(['id'=>9]);
        // dd($user_data);
        // 4.firstOrNew,需手动保存
        // $bool=Student::firstOrNew(['vip_name'=>'mmm']);
        // $student->save();

        //更新数据
        //1.通过模型更新数据
        // $user_data = TestormModels::find(8);
        // $user_data ->username = 'sunsidess';
        // $user_data ->password = 23123;
        // $user_data ->tel = 213123200;
        // // 问题：如果model中设置了取得原本的时间戳，则保存失败
        // // Call to a member function format() on string
        // $bool = $user_data ->save();//返回bool值
        // var_dump($bool);
        // 2.通过查询构造器更新,可批量更新
        // $num=TestormModels::where('id','=',9)->update(['username'=>'abcdefg']);
        // echo $num;  //返回更新的行数

        //删除数据
        //1.通过模型删除
        // $user_data=TestormModels::find(9);
        // $bool = $user_data->delete(); //返回bool值
        // var_dump($bool);
        //2.通过主键值删除::destroy(),传id
        // $num=TestormModels::destroy(8); //删除主键为10的一条记录
        // echo $num; //返回删除的行数
        // $num=TestormModels::destroy([7,2]); //删除多条  或者$num=Student::destroy([10,5]);
        // echo $num; //返回删除的行数
        //3.根据条件值删除
        // $user_data = TestormModels::where('id','>',4)->delete();
        // var_dump($user_data);

    }
}